package drg_group.wuhan_2022.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.wuhan_2022.Base;
import drg_group.wuhan_2022.MedicalRecord;
import drg_group.wuhan_2022.ADRG.*;

public class MDCK{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"E14.900x001","E27.000x003","E10.700x032","E34.300x002","E01.000x002","E04.902","E16.301","E29.000x002","E70.101","E16.200","E83.100","E04.100","E11.700x033","E40.x00","E05.800x005","E76.200x010","E89.300x002","E88.800x008","E83.501","E72.902","E02.x00","E87.001","E31.900","E27.400x005","E84.801","E16.800x002","E85.300x002","E04.200x001","E72.402","E78.100x003","E06.303","E10.600x043","E53.800x012","D34.x01","E80.700","E04.801","E07.901","E29.100x002","E05.301","E16.100x010","E75.500x001","E00.100x002","E72.002","E72.205","E80.100","E89.303","I15.101","E77.100x006","E23.006","E04.200","E24.800x001","E72.100x006","E16.900x002","E86.x00x003","E29.002","D44.901","E05.100","E06.000","E78.401","E10.503","D09.302","E14.600x043","E21.300","E00.901","E01.800x002","E88.100x006","E74.005","E14.100x051","E75.501","E34.803","E10.500x049","E89.302","E06.300","E14.500x044","E10.101","D35.200x008","E05.200","E31.000","E43.x00x001","E14.000x002","E71.000","E77.801","E78.000x006","E22.900","E77.000x002","E00.200x002","E70.100x001","E76.200x012","E10.500x043","E13.902","E52.x00x003","E23.611","E10.900x004","E78.300x002","E74.001","D35.200","E03.300","E06.900","E14.500x042","D44.800","E78.300x004","E83.504","E13.907","E72.003","E23.000x008","R94.700","E16.100x005","E74.400","E78.000x007","E16.111+G94.3*","E07.800x004","E16.800x001","E10.500x021+I79.2*","E27.800x021","E34.304","E11.000x005","E34.802","E23.300x001","E25.000x007","C74.000","E16.112","E20.801","E34.000","E52.x00x002","E14.800","E05.300","E23.600x008","E50.100x001+H13.8*","E72.201","E76.200x002","C75.100","D35.100","E11.900","E21.004","E80.201","E76.200x006","E70.000","E03.100x002","E11.700x024","E16.109","E11.000x001","E72.500x005","E06.002","E30.000x003","E10.700x024","E87.400","E80.301","E88.100x004","E23.600x014","E79.100","Q89.205","E23.613","E85.901","E72.500x003","E76.000","E34.303","E27.401","E07.803","E27.400x006","E16.800x004","E56.100","E46.x00x004","E78.300x001","D44.300x001","E78.900","E20.901","E74.100","D44.201","E21.400x003","E23.005","E51.100","E23.617","E34.805","E89.000","E72.100x007","E74.804","E21.000","E16.300x001","E78.208","E24.201","D35.700","E03.001","E30.102","E31.800","E61.800","E72.300x001","E78.600x009","E88.100x002","Q89.100","E89.801","D44.500x003","E00.000","E03.100x004","E15.x00x002","E43.x00","E66.000","S37.803","D09.304","E72.100x004","E71.302","D44.801","E10.900x003","E61.200","E65.x00x010","E87.600x002","E27.806","E43.x00x002","E72.500","E76.200x001","E27.807","E88.001","E13.901","E34.200","E20.802","E01.100x002","Q93.300","E72.400","E06.100x003","E78.100x005","E23.604","E72.302","Q87.100x904","C79.700","E06.500x004","E78.209","E65.x00x011","E78.901","E34.400","E34.301","C73.x00","E88.900x010","E12.600","E65.x08","D09.300","E76.900x001","E55.002","E78.100x004","E78.210","E87.203","E14.100x012","E21.100x001","D44.200x001","E12.000","E72.800x005","E03.802","E21.400x001","E79.900","E72.303","E72.102","E22.801","E72.500x004","E87.303","E74.402","E72.004","E78.100x002","E14.000x004","E21.003","R73.900x001","E20.100","E80.002","E74.802","E27.101","E83.800","E11.600x043","E26.001","E70.800x002","E03.101","E11.101","E27.001","E16.100x001","E65.x01","K90.403","E11.002","E11.500x045","E11.503","E85.300x003","E71.308","E27.804","E61.900","E16.800x105","E87.205","E03.901","E83.002","E10.500x046","E78.002","E10.000x005","E71.310","E14.500x046","E72.500x002","Q89.101","E23.000x007","E10.100x012","E53.900","E72.202","E64.800","C75.000","E04.200x003","E07.000x002","E46.x00x003","E88.203","E84.900","E75.503","R73.003","E05.900x001","E86.x00x004","E86.x01","E71.100x003","E88.800x007","E29.900","E74.401","E10.501+I79.2*","E83.305","E25.003","E22.200","E27.406","E85.200x001","C79.800x839","E10.900","Q89.200x204","E74.101","E21.300x004+G73.5*","E04.900x001","E74.000x013","E78.207","E61.000","E24.902","E80.300x001","Q87.800x911","E53.800x010","E78.000x003","E74.901","E34.800x006","E70.301","E20.900","E42.x00","A18.806+E35.0*","E23.202","E78.600x001","E01.000x003","E72.400x002","E10.100","K90.405","E10.600x051","R29.000","E64.100","E11.800","E00.100x003","E71.300x011","E77.100x003","E03.000x004","E21.300x002","E78.601","E27.407","E16.100x004","E22.802","E89.800x002","E01.000","E23.600x016","E05.905","E03.902+G73.5*","E72.306","E75.502","E23.200x005","E14.500x048","E26.000x003","E74.003","E44.000","E72.301","E34.900x003","E74.006+K77.8*","D35.200x009","E87.202","E83.000","E06.300x004","E24.200","E89.002","E83.309","E04.100x005","E72.800x002","C74.900","E10.505","E23.000x014","E74.300x001","E70.300x004","E07.000x001","E85.400x014","E23.605","E01.100","E88.100x001","E89.601","E31.002","E88.801","E15.x00x004","E20.000","E64.900","R81.x00x001","E87.201","E12.900","E05.200x004","E53.000","E30.100x002","E78.801","E03.900","E70.200","D44.500x001","E88.803","D35.300","E06.000x003","E22.000x001","E87.302","E13.905","E16.105","E79.800x001","E83.402","Q89.201","E34.305","E88.901","E72.300x002","E80.202","E14.500x021+I79.2*","E59.x00","E11.500x049","E27.300","E72.401","E51.100x006","E07.806","E13.101","E70.900","E23.701","E74.000x008","E80.200x001","E71.309","E04.201","E21.402","E16.800x007","E23.600x010","D44.900x001","E00.900x005","E16.802","E27.901","E74.200","E74.100x004","E13.000","E13.600","E05.900x007+G73.0*","E25.802","E30.103","E16.901","E07.100","E46.x01","E04.001","E23.203","E29.106","C75.900","E23.009","E75.505","E55.900","E61.700","E23.000","E74.002","E74.000x007","D81.300","E24.000x001","E10.500x051","E78.600x003","E74.004","E23.600x005","E34.501","D35.900","E10.102","E25.001","E65.x04","D17.700x029","E21.301","E66.201","E87.801","E70.300x005","E21.005","E27.500","E87.500","E72.200x004","E03.100x001","E07.802","E10.700x021","E34.500","E16.104","E30.100","E72.304","E74.900x002","D34.x00","E80.000","E61.100","E25.000x008","E10.000","E13.906","E67.000","E83.303","Q89.200x203","E16.110","D44.000x001","E88.806","E70.201","E16.800x103","E83.300x008+M90.8*","E22.000x002","E46.x00x005","D09.303","E27.808","E45.x00x003","E23.000x011","E44.100","E16.100x006","E83.300x010","E23.000x005","E11.700x021","E87.600x004","E78.100x008","E10.500x047","C79.805","E71.100x005","E89.301","E23.616","E27.000x011","E78.600x011","E01.801","E05.805","E78.600","E27.404","E22.002","E27.405","R82.400","E87.200x002","B26.800x011","E65.x00x002","E88.800x004","C74.100","D34.x00x005","E80.203","E04.903","E27.810","E88.000x002","E53.804","E80.001","E10.001","E13.904","E80.100x002","E26.803","E80.000x004","A18.801+E35.8*","E11.700x032","E23.302","E61.600","E83.900","E10.003","E34.300x006","D09.301","D44.800x002","E31.100","E16.803","E88.800x009","D34.x00x003","E11.001","Q89.200x012","E89.201","E24.901","E30.001","E53.100x001","E01.201","E51.900x001","E87.800x004","E71.101","E87.802","E16.103","E51.900","E27.403","B49.x02+E35.8*","E21.401","E11.500x046","E14.700x011","E06.001","E83.000x005","E03.100","E04.102","E05.802","E52.x00","E14.000x001","E23.614","E76.300","E87.600x003","E24.400","E34.500x001","E83.505+F02.8*","E72.203","E04.101","E88.903","E27.200x003","E13.900x006","E76.200x003","E00.100","E13.102","E23.002","E87.102","E88.800x005","B67.302+E35.0*","R94.801","E14.500x041","E77.000","E26.800x002","E72.900x002","R94.600","A18.700x002+E35.1*","E11.505","E34.500x002","E54.x00","E27.000x002","E07.100x002","E06.300x001","E70.204","E23.007","E71.304","E07.800x009","R82.401","E04.104","E78.602","R73.001","E87.700","E11.504","E72.400x001","E03.000x002","E11.103","Q89.208","E34.100","E87.600","D35.100x002","E03.200x003","E85.800","H02.600","E16.101","E66.900x001","E14.000x005","E78.200x012","E83.306","E01.200x001","E05.801","E31.901","E77.900","E23.100","E14.700","E13.800","E16.102","E14.100x031","E80.200x005","E25.901","E23.601","E10.000x001","E24.100","E78.204","E78.402","E64.000","Q89.200x601","E80.302","E21.000x007","E06.200","E45.x00","E68.x00","E14.500x043","E03.801","E00.000x002","E12.100","E10.600x042","E14.600x042","E21.300x003+M14.1*","E78.202","E70.205","E83.000x006","E88.807","E05.000","E74.000x009","E16.000x001","E04.904","E78.600x006","E63.000","E89.001","E74.803","E88.300","E29.100x004","D35.200x004","R79.801","E72.100x003","E05.804","E74.300x003","E70.300x003","E74.100x002","E00.900x002","E61.300","E27.800x010","E72.500x001","E66.900","E74.801","E79.001","E78.000x005","E83.500x001","E76.100","E14.600x051","E14.700x031","E26.802","E78.206","E74.000","E14.700x024","E10.500x048","E26.900","E66.200","E83.401","E10.500x045","E11.500x047","E83.200x002","C79.825","E23.600x001","E24.801","E88.804","E23.000x015","E25.902","E06.500x002","E67.300","E74.200x002","E83.300x014","E12.700","E24.300","E00.900x004","E87.204","E04.000","E23.600x011","E10.000x002","E16.300x002","E41.x00","E65.x07","E72.305","E00.900","E27.800x012","E03.201","E23.606","E07.800x007","E14.700x021","E70.000x002","E11.600x051","E05.400x001","E07.800x003","E12.800","E11.000x006","E61.500","E14.500x045","E21.201","E06.300x005","E14.100","E26.100","E70.102","E77.100x002","E78.100x007","E78.201","E78.300x003","E83.308+M90.8*","E83.301","E16.100x002","E23.603","E05.203","E83.300x007","E78.205","E70.300","E50.900","E78.500x001","E05.001","E23.008","E60.x00","E74.800x007","E10.901","E11.102","E06.301","E04.901","E01.200","E25.801","E63.100","E83.307+M90.8*","E07.801","E11.700x025","E16.106","E78.000x004","E10.800","E46.x00x002","E87.301","E14.500x050","E29.001","E83.200","E71.305","E74.000x011","E76.200x011","E65.x10","E27.802","E72.005","D44.001","E11.700x031","E06.100","Q89.206","E07.000","E77.100x005","E06.400","E64.200","E06.500x001","E25.004","E71.100x004","E71.200","E53.100","E23.204","E78.600x007","E23.618","E83.503","E23.612","E80.200x004","E22.100","E05.302","E51.800","E31.001","E23.003","D35.001","E83.403","E74.201","E05.904+G73.5*","E78.001","E20.900x004+G73.5*","E07.800x011","Q87.807","E21.500","E83.500x009","E16.800x006","E11.100x051","E06.502","E77.000x003","E88.802","D35.000","E14.000x006","E74.007+G73.6*","E16.800x104","E87.701","E74.300x002","E27.803","E11.500x044","E71.300x005","E76.200x007","E66.901","E72.800x004","D18.000x810","E14.700x025","E10.100x051","E11.600x042","E78.800x002","E06.100x001","E56.900","E14.500x011+I79.2*","E41.x01","E10.504","E83.500x008","Q85.900x006","D44.101","E10.100x031","E30.101","E71.307","E76.200x004","E53.802","E83.300x021+M90.8*","E05.800x001","E05.202","E87.101","E11.700x011","E06.400x002","E86.x00x001","E87.501","N25.801","E53.800x011","E70.202","E10.700","E23.201","E23.600x015","E13.700","E05.003","E10.000x006","E29.104","E74.000x010","E88.000x003","E23.200x003","D35.200x007","E10.500x044","E23.615","E34.500x005","E72.101","E11.500x051","E16.300","E23.010","E27.501","E27.200","E25.903","E75.504","E78.600x010","E05.806","E88.100x005","D44.100x001","E66.100","E72.200x007","E83.500x007","E70.203","R73.002","E10.100x061","E14.000x003","E23.700x001","E27.000x001","E24.900","E23.610","E56.000","E76.201","D81.500","E53.800x013","E65.x13","E27.100x003","E16.800x003","E78.600x008","E89.100","E23.619","E75.600x001","R73.000","E06.100x002","E70.800x003","E83.500x011","E03.202","E34.300x003","E14.500x051","E65.x03","E03.803+F02.8*","E23.607","E27.801","E78.200x008","E87.803","E14.700x032","E23.004","C75.300","E24.202","E11.500x048","E21.006","E25.005","E89.102","E14.500x047","E34.901+G73.5*","E30.002","E78.003","E24.200x001","E88.800x013","E27.500x003","E14.500x049","E07.804","E27.809","E34.302","D44.501","E07.805","E89.800x003","Q89.203","E65.x09","E65.x02","E34.801","E22.000x005","E21.001","E71.102","E66.801","E27.800x005","E13.900x003","E72.001","E78.500","D44.400x001","E72.204","E72.901","E05.400","E77.100x004","E23.001","E89.300x003","E24.001","E83.304","E30.801","E74.009","E04.900x006","E76.200x008","E07.001","E22.001","E11.000","E26.000","A18.700+E35.1*","E63.900","E34.804","E85.413+L99.0*","E03.900x006","E74.400x005","E13.903","E72.900x004","E89.200x001","R64.x00","E72.200x002","E76.800","Q89.207","E01.802+F02.8*","E78.000","E23.301","E29.105","E67.100","E05.500","E23.200","E24.000","E53.901","E29.100","E23.608","E63.800","E71.300","E07.800x001","E87.206","E61.400","E65.x12","E25.002","E65.x05","E65.x11","E67.800","E83.001","E26.801","E67.200","E34.903","E83.502","D35.200x011","E11.003","E88.101","E27.805","E65.x00x013","E70.100x004","D35.200x010","E10.103","E78.100","E30.000","E72.200x008","C75.200","E14.000","E21.002","E70.800x001","E11.500x043","E74.000x012","E15.x00x001","E01.100x003","D44.802","E74.800x006","C73.x00x003","E89.101","Q90.000","E74.000x016+I43.1*","E03.000","E10.002","E06.501","E29.103","E56.800x001","E16.100x013","E16.801","E07.100x003","E80.003","E83.302","E85.406","E10.700x025","E27.402","E06.100x004","E72.900x006","E58.x00","E16.800x901","E23.602","D18.000x839","E05.201","E06.304","R74.800x009","E76.200x009","E59.x01","E03.400","E00.200","D44.301","E04.103","E71.103","E72.100x005","E78.200","E74.000x006","E72.800x001","E74.403"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCK入组条件，匹配规则：主诊断匹配");
        String result;

        result=KB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KD1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KD2.group(record);
        if (result.length()>0){
            return result;
        }

        result=KE1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KF1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KJ1.group(record);
        if (result.length()>0){
            return result;
        }

        if (false && record.ssList!=null && record.ssList.length>0  && Base.intersect(Base.SS_VALID,record.ssList)){
            Base.groupMessages.putMessage(record.Index,"符合KQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "KQY";
        }

        result=KR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KS1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KT1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KV1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KZ1.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCK的ADRG入组条件");
        return "";
    }
}

